# 学习笔记
#1.0 导入模块文件中存在相同定义的函数时，其调用取决其上文最近的一个定义，这跟模块内的调用一致
#2.0 支持汉字模块导入
#3.0 Python可能遇到多个名称相同的函数或变量，进而覆盖函数，最好不要采用from M1 import *导入方法：
#4.0 导入模块的操作会执行模块内部的执行指令，所以模块一般都不存在执行指令，除非是对一些模块内的方法或者类做初始化


# 导入整个模块
import M1
print('\n调用M1模块中的greet_user')
M1.greet_user('whm')                         # 掉用需要添加模块名

# 导入整个模块所有函数，Python可能遇到多个名称相同的函数或变量，进而覆盖函数，最好不要采用这种导入方法：
from M1 import *
print('\n导入整个模块所有函数')
greet_user('whm')                            # 调用不需要添加模块名
Fun1()                              

# 导入特定的函数
from M1 import Fun1
print('\n导入特定的函数,调用M1模块中的Fun1')
Fun1()

# 导入的函数存在名称冲突,给函数添加别名
from M1 import Fun1 as LocalFun1
print('\n导入的函数存在名称冲突,给函数添加别名')
LocalFun1()

# 给模块添加别名，方便调用
import M1 as M
print('\n给模块添加别名，方便调用')
M.greet_user('我给M1添加了别名')

# 导入模块的操作会执行模块内部的执行指令，所以模块一般都不存在执行指令，除非是对一些模块内的方法或者类做初始化
import M2

